
# use -g for debugging, -w to suppress warnings
# -Wall for lots of warnings, -O3 for highly optimized code

# full debug
#CFLAGS = -Wall -g -DDEBUG

# fast debug
CFLAGS = -Wall -O3 -DDEBUG

# fully optimized
#CFLAGS = -Wall -O3


CCXX=g++

LIBS=-lglut -lGLU -lGL -lm -L/usr/X11R6/lib -lXi -lXmu

all: main

clean:
	rm -f *.o main

Vector.o : Vector.cpp Vector.h
	$(CCXX) $(CFLAGS) -c Vector.cpp

Matrix.o : Matrix.cpp Matrix.h Vector.h
	$(CCXX) $(CFLAGS) -c Matrix.cpp

Quaternion.o : Quaternion.cpp Quaternion.h
	$(CCXX) $(CFLAGS) -c Quaternion.cpp

VectorList.o : VectorList.cpp VectorList.h
	$(CCXX) $(CFLAGS) -c VectorList.cpp

MatrixList.o : MatrixList.cpp MatrixList.h
	$(CCXX) $(CFLAGS) -c MatrixList.cpp

LinearProgramSolver.o : LinearProgramSolver.cpp LinearProgramSolver.h
	$(CCXX) $(CFLAGS) -c LinearProgramSolver.cpp

DifferentialEquation.o : DifferentialEquation.cpp DifferentialEquation.h
	$(CCXX) $(CFLAGS) -c DifferentialEquation.cpp

3d_object.o : 3d_object.cpp 3d_object.h
	$(CCXX) $(CFLAGS) -c 3d_object.cpp

3ds_loader.o : 3ds_loader.cpp 3ds_loader.h
	$(CCXX) $(CFLAGS) -c 3ds_loader.cpp

MotionData.o : MotionData.cpp MotionData.h 3d_object.h
	$(CCXX) $(CFLAGS) -c MotionData.cpp

Main.o : Main.cpp 3ds_loader.h Quaternion.h DifferentialEquation.h
	$(CCXX) $(CFLAGS) -c Main.cpp

main : Vector.o Matrix.o Quaternion.o VectorList.o MatrixList.o LinearProgramSolver.o DifferentialEquation.o 3d_object.o 3ds_loader.o MotionData.o Main.o
	$(CCXX) $(CFLAGS) -o FloorCollision \
	Vector.o Matrix.o Quaternion.o VectorList.o MatrixList.o LinearProgramSolver.o DifferentialEquation.o 3d_object.o 3ds_loader.o MotionData.o Main.o \
	$(LIBS)

